МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САПР
СИМВОЛЬНІ МАСИВИ. РЯДКОВИЙ ТИП У МОВІ PASCAL
ЗВІТ
до лабораторної роботи № 6 з курсу:
“Алгоритмізація та програмування”
1. МЕТА РОБОТИ
Мета роботи – ознайомитись з окремим видом масивів – строками, або рядками символів.
2. ТЕОРЕТИЧНІ ВІДОМОСТІ
Під час розв’язування різних задач на ЕОМ виникає необхідність використання рядків, або рядків символів. У задачах лексичного і синтаксичного аналізу, а також при обробці текстової інформації, основним об’єктом обробки є рядки. Для позначення у програмі наперед визначеної послідовності символів служить рядок – константа. Рядок-константа – це послідовність символів між двома одинарними апострофами, наприклад:
’Львівська політехніка’
’Введи X,Y’
Якщо в середині рядка-константи є апостроф, то він подвоюється:
’Вимкни комп’’ютер’
’Опиши об’’єкт’
Символ ’ (апостроф) у мові Паскаль використовується як обмежувач рядків-констант. Тому транслятор не переплутає тип константи, якщо вона стоїть між апострофами.
Наприклад:
25 – ціла константа,
‘25’ – рядок-константа.
Кожна з цих констант наведена у пам’яті машини по-різному:
25 –0000000000011001 – у двійковій системі
’25’ – 0011001000110101,
де 00110010 – код цифри 2 та 00110101 – код цифри 5 в системі ASCII.
Відповідно і операції над цими двома константами можуть виконуватись різні: число 25 може брати участь в арифметичних операціях, а рядкова константа ’25’ у таких операціях використовуватись не може.
2.1. СИМВОЛЬНІ МАСИВИ
У більшості випадків конкретна послідовність символів не є наперед відомою, а формується у процесі виконання програми. Тому в мові Паскаль використовуються крім рядкових констант і рядкові змінні – одномірні масиви, елементами яких є символи:
VAR ST:ARRAY [1..50] OF CHAR;
Ми описали рядкову змінну ST, яка є рядком з п’ятдесяти символів. Типом індекса такого масиву повинен бути інтервальний цілий тип.
Мова Паскаль має додаткові засоби для роботи з такими масивами.
В авторській версії мови Паскаль рядкові змінні подано у вигляді упаковного масиву, елементи якого максимально ефективно займають пам’ять машини за рахунок упакування декількох компонентів в одне поле пам’яті.
Опис упакованого масиву:
VAR TS = PACKED ARRAY[1..50] OF CHAR;
Упакований масив використовується у програмі так само, як і неупакований, але програми з такими масивами виконуються дещо повільніше, оскільки необхідний додатковий час на вибір компонентів з масиву.
Для зменшення часу можна використати процедури PACK I UNPACK для упакування та розпакування масивів. Упаковані масиви (строки) мають ті ж властивості, що і звичайні масиви, але є і деякі відмінності:
1. Рядковій змінній можна присвоїти значення рядкової константи. При цьому слід пам’ятати, що довжини рядквої константи і змінної повинні бути однакові:
VAR ST1:PACKED ARRAY[1..22]OF CHAR;
BEGIN
ST1: = ’Львівська/Політехніка/’;
де / – символ пропуску (пробілу).
Пропуск є значущим символом, і тому рядки можна доповнювати відповідною кількістю пропусків.
2. Над рядковими змінними і рядковими константами можуть виконуватись операції порівняння: >, >=, <, <=, =, < >.
Порівняння проводиться посимвольно, тому довжина рядків символів, що порівнюються, повинна бути однакова.
Наприклад, порівняти: ’АВС’ > ’ABL’
Така операція дасть результат FALSE, оскільки буква С стоїть раніше ніж буква L, тобто C<L.
3. Над рядковими масивами може виконуватись операція конкатенації + (приєднання) при виведенні:
S1 = ’Львівська’;
S2 = ’Політехніка’;
WRITELN(S1 + ’/’ + S2);
У результаті виконання оператора WRITELN на екрані висвітиться:
Львівська Політехніка
4. До рядків символів може застосуватись стандартна функція EOLN, яка дає значення TRUE, якщо зчитано останній символ вхідного рядка і значення FALSE, якщо кінця рядка не досягнуто.
Приклад: У реченні довжиною не більше 80 символів обчислити число входжень слів FOR.
Блок-схему алгоритму наведено на рис. 1.
Блок 3 – введення першої і другої букви ...